package com.zenithmind.news.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.news.pojo.entity.UserBehavior;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 用户行为服务接口
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface UserBehaviorService extends IService<UserBehavior> {

    /**
     * 记录用户行为
     * 
     * @param userId 用户ID
     * @param newsId 新闻ID
     * @param behaviorType 行为类型（1-浏览，2-点赞，3-收藏，4-分享，5-评论，6-搜索）
     * @param behaviorValue 行为值
     * @param score 行为评分
     * @return 是否成功
     */
    Boolean recordBehavior(String userId, String newsId, Integer behaviorType, 
                          String behaviorValue, Double score);

    /**
     * 获取用户行为历史
     * 
     * @param userId 用户ID
     * @param behaviorType 行为类型
     * @param limit 限制数量
     * @return 行为列表
     */
    List<UserBehavior> getUserBehaviorHistory(String userId, Integer behaviorType, Integer limit);

    /**
     * 获取用户偏好分析
     * 
     * @param userId 用户ID
     * @return 偏好分析结果
     */
    Map<String, Object> getUserPreferenceAnalysis(String userId);

    /**
     * 获取新闻行为统计
     * 
     * @param newsId 新闻ID
     * @return 行为统计
     */
    Map<String, Long> getNewsBehaviorStatistics(String newsId);

    /**
     * 获取用户活跃度
     * 
     * @param userId 用户ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 活跃度评分
     */
    Double getUserActivityScore(String userId, LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 清理过期行为数据
     * 
     * @param days 保留天数
     * @return 清理数量
     */
    Long cleanExpiredBehaviors(Integer days);
}
